home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / msysjour / vol06 / 01 / kermit / wntfns.c < prev    next >
C/C++ Source or Header  |  1990-12-31  |  3KB  |  128 lines

  1. /*
  2.  * WNTERM function support module
  3.  *
  4.  * Copyright (c) by
  5.  * William S. Hall
  6.  * 3665 Benton Street, #66
  7.  * Santa Clara, CA 95051
  8. */
  9.  
  10. #define NOKANJI
  11. #define NOATOM
  12. #define NOSOUND
  13. #define NOMINMAX
  14. #include <windows.h>
  15. #include <ascii.h>
  16. #include <string.h>
  17. #include <stdlib.h>
  18. #include <stdarg.h>
  19. #include "ttycls.h"
  20. #include "wnterm.h"
  21. #include "wntdlg.h"
  22.  
  23. /* paint the main window */
  24. void NEAR MainWndPaint(HWND hWnd, LPPAINTSTRUCT lpps)
  25. {
  26.  
  27.     HDC hDC = lpps->hdc;
  28.  
  29.   // if the window is iconic, draw in the icon area
  30.     if (IsIconic(hWnd)) {
  31.     RECT rIcon;
  32.     GetClientRect(hWnd, (LPRECT)&rIcon);
  33.     Rectangle(hDC, 0,0,rIcon.right, rIcon.bottom);
  34.         TextOut(hDC,2,rIcon.bottom/3,(LPSTR)szIconTitle,strlen(szIconTitle));
  35.     }
  36.   // otherwise update the text in the window
  37.     else 
  38.     TTYWndPaint(&MWnd, lpps->hdc, lpps->rcPaint.top, lpps->rcPaint.bottom);
  39. }
  40.  
  41. /* come here to handle menu items */
  42. void NEAR WndCommand(HWND hWnd, WORD menuitem, LONG param)
  43. {
  44.  
  45.     HMENU hMenu;
  46.     FARPROC fp;
  47.  
  48.     switch (menuitem) {
  49.     case IDM_ABOUT:        // create the about box
  50.         fp = MakeProcInstance((FARPROC)AboutBoxProc, hInst);
  51.         DialogBox(hInst, MAKEINTRESOURCE(DT_ABOUT),hWnd,fp);
  52.         FreeProcInstance(fp);
  53.         break;
  54.  
  55.     case IDM_OFFLINE:
  56.       // if currently offline, then change the window proc
  57.       // over to the subclass window procedure.
  58.         SetWindowLong(hWnd, GWL_WNDPROC, (LONG)MainWndSubProc);
  59.       // rewrite the menu bar.
  60.         hMenu = GetMenu(hWnd);
  61.         ChangeMenu(hMenu,IDM_OFFLINE,(LPSTR)szOnLine,IDM_ONLINE,
  62.             MF_BYCOMMAND | MF_CHANGE);
  63.         DrawMenuBar(hWnd);
  64.       // indicate that we are online.
  65.         LineState = IDM_ONLINE;
  66.         break;
  67.  
  68.     case IDM_ONLINE:
  69.       // if currently online, reset the window proc.
  70.         SetWindowLong(hWnd, GWL_WNDPROC, (LONG)MainWndProc);
  71.       // redraw the menu.
  72.         hMenu = GetMenu(hWnd);
  73.         ChangeMenu(hMenu,IDM_ONLINE,(LPSTR)szOffLine,IDM_OFFLINE,
  74.             MF_BYCOMMAND | MF_CHANGE);
  75.         DrawMenuBar(hWnd);
  76.       // show new state.
  77.         LineState = IDM_OFFLINE;
  78.         break;
  79.  
  80.     case IDM_COMM:    // make communications settings.
  81.         fp = MakeProcInstance((FARPROC)SetCommParams, hInst);
  82.         DialogBox(hInst, MAKEINTRESOURCE(DT_COMM),hWnd, fp);
  83.         FreeProcInstance(fp);
  84.         break;
  85.  
  86.     case IDM_LOCAL:    // set local echo.
  87.         hMenu = GetMenu(hWnd);
  88.         if (MWnd.LocalEcho) {
  89.         MWnd.LocalEcho = FALSE;
  90.         CheckMenuItem(hMenu, menuitem, MF_UNCHECKED);
  91.         }
  92.         else {        
  93.         MWnd.LocalEcho = TRUE;
  94.         CheckMenuItem(hMenu, menuitem, MF_CHECKED);
  95.         }        
  96.         break;
  97.  
  98.     case IDM_CLEAR:    // clear the screen.
  99.         HideCaret(hWnd);
  100.         TTYClear(&MWnd);
  101.         SetCaretPos(MWnd.Pos.x, MWnd.Pos.y);
  102.         ShowCaret(hWnd);
  103.         break;
  104.     }
  105. }
  106.  
  107. /* 
  108.  * This function replaces printf.
  109.  * To use this function you must load the device driver OX.SYS
  110.  * Do NOT run Windows with redirection to AUX.
  111.  * Use dbf just like printf.
  112.  * Example dbf("function foo %d %s, myint, mystring);
  113.  */
  114. void FAR _cdecl dbs(const char *fmt, ...)
  115. {
  116.     char buf[255];
  117.  
  118.     va_list arg_ptr;
  119.  
  120.     va_start(arg_ptr, fmt);
  121.     vsprintf(buf, fmt, arg_ptr);
  122.     va_end(arg_ptr);
  123.  
  124.     OutputDebugString(buf);
  125.  
  126. }
  127.  
  128.